iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0
Odoo

Odoo 部署策略系列 第 10

流量加密與反向代理第三步:介紹 HTTPS、CA 與 SSL 憑證

  • 分享至 

  • xImage
  •  

有時候,當你在瀏覽某些網站時,瀏覽器可能會彈出「您的連線不是私人連線」的警告,並提供一個「進階」選項。點擊後,你可能會看到「繼續前往(不安全)」的提示。這到底代表了什麼?

讓我們先來了解一些相關的名詞。

HTTP 與 HTTPS 的差別是什麼?

HTTP(HyperText Transfer Protocol)是網際網路上傳輸資料的基本協議,但它本身並不加密,這意味著傳輸的資料可能被攔截或查看,包括敏感資訊如帳號和密碼。HTTPS(HTTP Secure)則是 HTTP 的加密版本,利用 SSL/TLS 憑證來加密資料傳輸,確保資料在傳輸過程中的安全性和完整性,防止中間人攻擊等網路威脅。

什麼是 SSL/TLS?

SSL(Secure Sockets Layer)和其後續版本 TLS(Transport Layer Security)是安全協議,用於加密伺服器與客戶端之間的流量。當伺服器安裝了 SSL/TLS 憑證後,瀏覽器可以通過 HTTPS 與伺服器建立加密連接,確保資料在傳輸過程中不被竊取或篡改,保障用戶的資料安全。

什麼是 CA(憑證授權機構)?

CA(Certificate Authority,憑證授權機構)是負責簽發和驗證數位憑證的可信第三方機構。當網站向 CA 申請 SSL/TLS 憑證時,CA 會驗證該網站的身份,並在確認後簽發一個受信任的憑證。這個憑證能證明網站的合法性,讓用戶確信自己連接的是可信任的伺服器。

什麼是信任鏈?

信任鏈是指從網站的 SSL/TLS 憑證開始,通過一系列中間憑證,最終追溯到根憑證的驗證過程。每個憑證都由上一級的 CA 簽署,形成一條完整的信任鏈。如果其中任何一個環節的憑證無效或不受信任,整個信任鏈就會中斷,瀏覽器就會顯示「連線不安全」的警告。這意味著雖然資料傳輸仍被加密,但無法確定伺服器的真實身份。

現在我們知道,這種警告通常表示網站的 SSL/TLS 憑證存在問題,可能是因為憑證過期、不受信任,或信任鏈無法驗證等原因。不過,即使瀏覽器顯示警告,網站的流量仍然是加密的,只是伺服器的身份無法確認,因此仍可能存在風險。


接下來,我們來介紹我們設計中的連線流程是如何運作的。

連線流程說明

  1. 用戶請求伺服器:當用戶在瀏覽器中輸入網址並發出 HTTP 請求時,Nginx 伺服器會自動將所有的 HTTP 請求重定向至 HTTPS,讓客戶端使用安全的連線方式重新連接。

  2. Nginx 反向代理處理請求:Nginx 接收到重新連接的 HTTPS 請求,並將瀏覽器的請求透過 HTTP 轉發給內部的 odoo 伺服器,同時提供 SSL/TLS 憑證給客戶,證明伺服器的身份。

  3. 憑證驗證:瀏覽器會檢查 Nginx 提供的 SSL/TLS 憑證,通過信任鏈進行驗證。如果憑證有效且信任鏈完整,瀏覽器會生成加密密鑰,與 Nginx 建立安全的加密通信通道。

    • 如果憑證不受信任或過期:當憑證無效、過期或信任鏈中斷時,瀏覽器會彈出警告,提示用戶連線不安全。此時,用戶可以選擇忽略警告,選擇繼續瀏覽(例如,點擊「繼續前往網站」)。這表示用戶將在信任鏈有問題的情況下進入網站,但傳輸內容仍會被加密,只是無法確保伺服器的身份可信。
  4. 建立加密的 HTTPS 通信:Nginx 與伺服器之間的資料傳輸將被加密,確保所有傳輸內容的機密性和完整性,防止資料在傳輸過程中被竊取或篡改;Nginx 跟 odoo 之間則仍然維持明碼傳輸的 HTTP 協議,不過因為他們聯絡的區域網路沒有外人可以進入(可參考從網路設計到 docker-compose:搭建 odoo 反向代理的第一步附圖),所以沒有洩漏或竄改的風險。

原本這一章就要實作這個主題,但不小心介紹得太多了,我們留到下一章再來詳細探討如何產生和設定這些憑證。


上一篇
為 odoo 建立 Nginx 反向代理第二步:nginx.conf 設定實作
下一篇
odoo 反向代理設定第四步:自簽 Root CA 並安裝 SSL 憑證
系列文
Odoo 部署策略13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言